// Mrjones_GPU_Butt.h : main header file for the MRJONES_GPU_BUTT application
//

#if !defined(AFX_MRJONES_GPU_BUTT_H__B83F0DCD_E6C2_4191_9D29_33D564E65877__INCLUDED_)
#define AFX_MRJONES_GPU_BUTT_H__B83F0DCD_E6C2_4191_9D29_33D564E65877__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#ifndef __AFXWIN_H__
	#error include 'stdafx.h' before including this file for PCH
#endif

#include "resource.h"       // main symbols

#ifndef ULONG_PTR
#define ULONG_PTR unsigned long*
#endif

/////////////////////////////////////////////////////////////////////////////
// CMrjones_GPU_ButtApp:
// See Mrjones_GPU_Butt.cpp for the implementation of this class
//
enum APP_TYPE{
	MESH_APP,SIDEDOC_APP,IMG_APP
};
enum SUPPORT_MESH_FORMAT{
	SMF_UNKNOWN = -1,
	SMF_OBJ		= 0,
	SMF_WRL		= 1,
	SMF_OFF		= 2,
	SMF_PLY		= 3
};

class CLego_3Dapp : public CWinApp
{
public:
	CLego_3Dapp();
	~CLego_3Dapp();
//Attributes
	//for frame 
	CString		m_sAppPath;
	CString		cstrLastFilePath;
	APP_TYPE	m_AppDocType;
	HACCEL		m_hAccelerator; 
	//for image
	CMultiDocTemplate *ImageTemplate;
	CString img_strfilterload,img_strfilterwrite, mesh_strfilterload, mesh_strfilterwrite;
	CString strfilterload,strfilterwrite;
	ULONG_PTR m_gdiplusToken;

	//for openGL
	COLORREF	OptionColorGLBack;
	COLORREF	OptionColorGLMatAmbient;
	COLORREF	OptionColorGLMatDiffuse;
	COLORREF	OptionColorGLMatSpecular;
	COLORREF	OptionColorGLMatEmission;
	UINT		OptionGLMatShininess;
	int			OptionGLPreDfMatSelection;
	int			OptionPseudoColorTypeSelection;
	
// Operations
public:
	bool IS_CGAL_Support_Reading(SUPPORT_MESH_FORMAT smf);
	bool IS_CGAL_Support_Wrting(SUPPORT_MESH_FORMAT smf);
	void InitMatlab();
	BOOL LoadOptions();
	BOOL SaveOptions();
// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CMrjones_GPU_ButtApp)
	virtual BOOL InitInstance();
	virtual int ExitInstance();
	//}}AFX_VIRTUAL
	DECLARE_MESSAGE_MAP()
	afx_msg void OnAppAbout();
	afx_msg void OnFileOpen();
	afx_msg BOOL OnOpenRecentFile(UINT nID);
	afx_msg void OnMenuCheckSetCurrentFolderAsInit();
	afx_msg void OnUpdateMenuCheckSetCurrentFolderAsInit(CCmdUI *pCmdUI);
};


/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_MRJONES_GPU_BUTT_H__B83F0DCD_E6C2_4191_9D29_33D564E65877__INCLUDED_)
